package com.smart.community.region.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 店铺租赁合同DTO
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-01-30
 */
@Data
@Schema(description = "店铺租赁合同DTO")
public class ShopLeaseContractDTO {
    
    /**
     * 合同ID
     */
    @Schema(description = "合同ID")
    private Long id;
    
    /**
     * 合同编号
     */
    @NotBlank(message = "合同编号不能为空")
    @Size(max = 50, message = "合同编号长度不能超过50个字符")
    @Schema(description = "合同编号", required = true)
    private String contractNumber;
    
    /**
     * 店铺ID
     */
    @NotNull(message = "店铺ID不能为空")
    @Positive(message = "店铺ID必须大于0")
    @Schema(description = "店铺ID", required = true)
    private Long shopId;
    
    /**
     * 租赁开始日期
     */
    @NotNull(message = "租赁开始日期不能为空")
    @Schema(description = "租赁开始日期", required = true)
    private LocalDate leaseStartDate;
    
    /**
     * 租赁结束日期
     */
    @NotNull(message = "租赁结束日期不能为空")
    @Schema(description = "租赁结束日期", required = true)
    private LocalDate leaseEndDate;
    
    /**
     * 月租金
     */
    @NotNull(message = "月租金不能为空")
    @DecimalMin(value = "0.01", message = "月租金必须大于0")
    @Schema(description = "月租金", required = true)
    private BigDecimal monthlyRent;
    
    /**
     * 押金金额
     */
    @DecimalMin(value = "0.00", message = "押金金额不能为负数")
    @Schema(description = "押金金额")
    private BigDecimal depositAmount;
    
    /**
     * 合同状态：0-已终止，1-生效中，2-已到期
     */
    @Schema(description = "合同状态：0-已终止，1-生效中，2-已到期")
    private Integer contractStatus;
    
    /**
     * 备注
     */
    @Size(max = 500, message = "备注长度不能超过500个字符")
    @Schema(description = "备注")
    private String remark;
}
